package cn.tedu.blog.server.service;

import cn.tedu.blog.server.pojo.dto.RoleAddNewDTO;
import cn.tedu.blog.server.pojo.vo.RoleListVO;
import cn.tedu.blog.server.utils.JsonPage;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author: 雷茂林
 * @Date:2022/7/17 16:58
 * @Description: 角色管理-业务逻辑接口
 */

public interface IRoleService {

    /**
     * 创建角色
     * @param roleAddNewDTO
     * @return
     */
    @Transactional
    void creatRole(RoleAddNewDTO roleAddNewDTO);



    /**
     * 删除角色
     */
    @Transactional
    void deleteById(Long id);



    /**
     * 批量删除角色
     */
    int deleteByIds(List<Long> ids);



    /**
     * 修改角色基本信息
     */
    @Transactional
    void updateById(RoleAddNewDTO roleAddNewDTO);



    /**
     * 修改角色权限
     */
    @Transactional
    void updateMenuByRoleId(Long roleId,Long[] menuTreeArray);



    /**
     * 查询所有数据数量，用于计算页码
     * @return
     */
    int getCountAll(RoleListVO roleListVO);



    /**
     * 根据用户ID查询完成数据回填
     * @param id
     * @return
     */
    RoleListVO getBackFillById(Long id);



    /**
     * 根据用户id回显该用户拥有的角色id
     * @param id
     * @return
     */
    Long[] getBackFillByUserId(Long id);



    /**
     * 下拉列表角色回显
     */
    List<RoleListVO> getRoleEcho();



    /**
     * 条件分页查询
     * @param roleListVO
     * @return
     */
    JsonPage<RoleListVO> listByKeyword(RoleListVO roleListVO);



    /**
     * 根据角色id查询对应权限
     * @param id
     * @return
     */
    List<Long> roleMenuById(Long id);



}
